#define  _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()
{
	int m, n;
	int t1, t2, t;
	scanf("%d %d", &m, &n);
	t1 = m;
	t2 = n;
	if (t1 >= t2)
	{
		while (n != 0)
		{
			t = m % n;
			m = n;
			n = t;
		}
		printf("%d\n", m);
		printf("%d\n", t1 * t2 / m);
	}
	else if (t1 < t2)
	{
		while (m != 0)
		{
			t = n % m;
			n = m;
			m = t;
		}
		printf("%d\n", n);
		printf("%d\n", t1 * t2 / n);
	}

	return 0;
}

//void Swap(int *px, int *py)
//{
//	int t = *px;
//	*px = *py;
//	*py = t;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	Swap(&a,&b);
//	printf("%d\n",a);
//	printf("%d\n", b);
//
//	return 0;
//}

#include<math.h>

//int is_prime(int n)
//{
//	int j = 0;
//	for (j = 2; j <= sqrt(n); j++)
//	{
//		if (n % j == 0)
//		{
//			return 0;
//		}
//	}
//	return 1;
//}
//
//int main()
//{
//	int i = 0;
//	for (i = 100; i <= 150; i++)
//	{
//		if (is_prime(i))
//		{
//			printf("%d ", i);
//		}
//	}
//		
//	return 0;
//}\

//int main()
//{
//
//
//	return 0;
//}